/* src/interfaces/ecpg/include/ecpgerrno.h */

#ifndef _ECPG_ERRNO_H
#define _ECPG_ERRNO_H

#include <errno.h>

/* 这是嵌入式SQL程序可以返回的所有错误代码列表 */
#define ECPG_NO_ERROR		0
#define ECPG_NOT_FOUND		100

/* 由ecpglib返回的系统错误代码获取正确的数字，
 * 但被转换为负数
 */
#define ECPG_OUT_OF_MEMORY	-ENOMEM

/* 首先，我们有一组ecpg消息，它们从200开始 */
#define ECPG_UNSUPPORTED		-200
#define ECPG_TOO_MANY_ARGUMENTS		-201
#define ECPG_TOO_FEW_ARGUMENTS		-202
#define ECPG_TOO_MANY_MATCHES		-203
#define ECPG_INT_FORMAT			-204
#define ECPG_UINT_FORMAT		-205
#define ECPG_FLOAT_FORMAT		-206
#define ECPG_NUMERIC_FORMAT		-207
#define ECPG_INTERVAL_FORMAT		-208
#define ECPG_DATE_FORMAT		-209
#define ECPG_TIMESTAMP_FORMAT		-210
#define ECPG_CONVERT_BOOL		-211
#define ECPG_EMPTY			-212
#define ECPG_MISSING_INDICATOR		-213
#define ECPG_NO_ARRAY			-214
#define ECPG_DATA_NOT_ARRAY		-215
#define ECPG_ARRAY_INSERT		-216

#define ECPG_NO_CONN			-220
#define ECPG_NOT_CONN			-221

#define ECPG_INVALID_STMT		-230

/* 与动态SQL相关 */
#define ECPG_UNKNOWN_DESCRIPTOR		-240
#define ECPG_INVALID_DESCRIPTOR_INDEX	-241
#define ECPG_UNKNOWN_DESCRIPTOR_ITEM	-242
#define ECPG_VAR_NOT_NUMERIC		-243
#define ECPG_VAR_NOT_CHAR		-244

/* 最后是后端错误消息，它们从400开始 */
#define ECPG_PGSQL			-400
#define ECPG_TRANS			-401
#define ECPG_CONNECT			-402
#define ECPG_DUPLICATE_KEY		-403
#define ECPG_SUBSELECT_NOT_ONE		-404

/* 为了兼容性，我们为相同的错误定义一些不同的错误代码
 * 如果添加新的，确保不要重复定义
 */
#define ECPG_INFORMIX_DUPLICATE_KEY -239
#define ECPG_INFORMIX_SUBSELECT_NOT_ONE -284

/* 后端警告，从600开始 */
#define ECPG_WARNING_UNRECOGNIZED	   -600
 /* 警告:  (事务已中止): 查询在结束之前被忽略 */

 /*
  * 警告:  当前事务已中止，查询在事务块结束之前被忽略
  */
#define ECPG_WARNING_QUERY_IGNORED	   -601
 /* 警告:  PerformPortalClose: 找不到门户 "*" */
#define ECPG_WARNING_UNKNOWN_PORTAL    -602
 /* 警告:  BEGIN: 已经有一个事务在进行中 */
#define ECPG_WARNING_IN_TRANSACTION    -603
 /* 警告:  AbortTransaction，但不在进行中的状态 */
 /* 警告:  COMMIT: 没有正在进行的事务 */
#define ECPG_WARNING_NO_TRANSACTION    -604
 /* 警告:  BlankPortalAssignName: 门户 * 已经存在 */
#define ECPG_WARNING_PORTAL_EXISTS	   -605

#endif							/* !_ECPG_ERRNO_H */
